package com.lxp.basic;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class DemoBasic {
    public static void main(String[] args) {
//        method1();
//        System.out.println(method2());
//        method3();
//        guessNumGame();
//        countStringNum();
       /* try {
            dateMethod();
        } catch (ParseException e) {
            e.printStackTrace();
        }*/
//        clendarMethod();
        iteratorMethod();
    }


    //迭代器
    private static void iteratorMethod() {
        /*
        * 两个常用方法：
        * boolean hasNext() 如果仍有元素可迭代，则返回true
        *   判断集合中还有没有下一个元素，有返回true，没有返回false
        * E next()返回迭代的下一个元素
        *
        * 迭代器的使用步骤：
        * 1.使用集合中的方法iterator()获取迭代器的实现类对象
        * 2.使用Iterator接口中的方法hasNext()判断是否有下一个元素
        * 3.使用Iterator接口中的方法next()取出集合中的额下一个元素
        * */
        Collection<String> coll = new ArrayList();
        coll.add("贝贝");
        coll.add("晶晶");
        coll.add("欢欢");
        coll.add("迎迎");
        coll.add("妮妮");
        //获取迭代器
        Iterator<String> it = coll.iterator();
        while (it.hasNext()){ // 判断是否有下一个元素 首个指针位置在-1
            System.out.println(it.next());
        }
        System.out.println("==============");
        for (String s : coll) {
            System.out.println(s);
        }
    }

    //Calendar类
    private static void clendarMethod() {
        Calendar c = Calendar.getInstance();
        System.out.println(c);
        System.out.println(c.getTime());
        System.out.println(c.get(Calendar.YEAR));
        System.out.println(c.get(Calendar.MONTH) + 1);
        System.out.println(c.get(Calendar.DATE) + "或者"+c.get(Calendar.DAY_OF_MONTH));
        System.out.println("==============");
        c.add(Calendar.YEAR,2);
        c.add(Calendar.MONTH,-5);
//        c.set(2050,10,03);
        System.out.println(c.get(Calendar.YEAR));
        System.out.println(c.get(Calendar.MONTH) + 1);
        System.out.println(c.get(Calendar.DATE) + "或者"+c.get(Calendar.DAY_OF_MONTH));

    }

    //Date类
    private static void dateMethod() throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日hh:mm:ss");
        System.out.println(format.format(new Date()));
        SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        System.out.println(format2.format(new Date()));
        SimpleDateFormat format3 = new SimpleDateFormat("yyyyMMddhhmmssss");
        System.out.println(format3.format(new Date()));
        Date date = format.parse("2020年03月23日11:42:06");
        System.out.println(date);
    }

    //计算字符数
    public static void countStringNum() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串：");
        String input = sc.next();
        int countUpeer = 0;
        int countLower = 0;
        int countNumber = 0;
        int countOther = 0;
        char[] charArray = input.toCharArray();
        for (int i = 0; i < charArray.length; i++) {
            char ch = charArray[i];
            if ('A' <= ch && ch <= 'Z') {
                countUpeer++;
            } else if ('a' <= ch && ch <= 'z') {
                countLower++;
            } else if ('0' <= ch && ch <= '9') {
                countNumber++;
            } else {
                countOther++;
            }
        }
        System.out.println("大写字母有：" + countUpeer);
        System.out.println("小写字母有：" + countLower);
        System.out.println("数字有：" + countNumber);
        System.out.println("其他字符有：" + countOther);
        System.out.println("字符串长度是：" + charArray.length);
    }

    //猜数字
    public static void guessNumGame() {
        Random r = new Random();
        int randomNum = r.nextInt(100) + 1;
        Scanner scanner = new Scanner(System.in);
        //不限制次数猜数字
       /* while (true) {
            System.out.println("请输入你猜的数字：");
            int guessNum = scanner.nextInt();
            if (guessNum > randomNum) {
                System.out.println("太大了，请重试。");
            } else if (guessNum < randomNum) {
                System.out.println("太小了，请重试。");
            } else {
                System.out.println("恭喜你猜中啦！");
                break;
            }
        }*/
        //限制次数猜数字+
        int times = 10;
        for (int i = 1; i <= times; i++) {
            System.out.println("第" + i + "次请输入你猜的数字：");
            int guessNum = scanner.nextInt();
            if (guessNum > randomNum) {
                if (i < times) {
                    System.out.println("太大了，请重试。");
                } else {
                    System.out.println("( ⊙ o ⊙ )！哇哦，还没有猜对呀。)");
                    System.out.println("游戏结束，下次继续加油↖(^ω^)↗");
                }
            } else if (guessNum < randomNum) {
                if (i < times) {
                    System.out.println("太小了，请重试。");
                } else {
                    System.out.println("( ⊙ o ⊙ )！哇哦，还没有猜对呀。)");
                    System.out.println("游戏结束，下次继续加油↖(^ω^)↗");
                }
            } else {
                System.out.println("恭喜你猜中啦！");
                System.out.println("游戏结束。");
                break;
            }
        }
        System.out.println("猜数字，谜底：" + randomNum);

    }

    public static void method3() {
        Scanner sc = new Scanner(System.in);
        System.out.println("结果是：" + (sc.nextInt() + sc.nextInt()));
    }

    public static int method2() {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
        }
        return sum;
    }

    public static void method1() {
        for (int i = 1; i <= 100; i++) {
            System.out.println("我是龙小宝" + i + "号");
        }
        List<Integer> list = new ArrayList();
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) {
//                System.out.println("偶数:" + i);
                list.add(i);
            }
        }
        System.out.println("偶数集合：" + list);
        System.out.println("-------------------------");
        for (int num : list) {
//            System.out.println(num);
        }

    }

    //泛型
    /*
     * 是一种未知的数据类型，不知道使用什么类型时，使用泛型。
     * E e：element 元素 (byte int short long double float boolean char String)
     * T t：type 类型(对象)
     * 创建对象的时候，就会确定泛型的数据类型
     *
     * 不使用泛型：不安全，会引发异常
     * 使用泛型的好处：
     * 1.避免类型转换的麻烦
     * 2.把运行期异常，提升到了编译期
     * */

    //数据结构
    /*
     * 1、栈：先进后出
     * 2、队列：先进先出
     * 3、数组：查询快，增删慢
     * 4、链表：查询慢，增删快
     * */


}
